from django.db import models
from django.utils import timezone
from UserManager import models as user_models


# Create your models here.
# 创建一个模型用于记录用户的评分
class UserScore(models.Model):
    class Meta:
        verbose_name = '用户评分'
        verbose_name_plural = '用户评分'
        # 设置 report_type report_id account 唯一约束
        unique_together = ('report_type', 'report_id', 'account')

    # 根据ReportManager.models.model_dict.keys()生成report_type_choices
    # 报备类型
    report_type = models.CharField(max_length=50, verbose_name='报备类型')
    # 报备ID，为int
    report_id = models.IntegerField(verbose_name='报备ID')

    # 所属账号，是一个UserManager.models中的User模型的外键username
    account = models.CharField(verbose_name='所属账号', max_length=255)
    # 所属用户姓名，通常可以通过账号获取，利用账号去获取对应user_models.User.name
    name = models.CharField(max_length=50, verbose_name='用户姓名', blank=True, null=True)
    # 所属角色
    role = models.CharField(max_length=50, verbose_name='所属角色')
    # 实际分数，另一个表的score字段，假设是浮点数
    score = models.FloatField(verbose_name='分数', blank=True, null=True)
    #  事项认定时间
    time = models.DateTimeField(verbose_name='事项发生时间', blank=True, null=True)
    # 创建时间
    created_time = models.DateTimeField(default=timezone.now, verbose_name='创建时间')

    def save(self, *args, **kwargs):
        # 在保存模型之前，从User模型中获取用户名并赋值给name字段
        self.name = user_models.User.objects.get(username=self.account).name
        super(UserScore, self).save(*args, **kwargs)
